package proto

import (
	"regexp"
	"strconv"
	"strings"
	"time"
	D "websocket_apn/define"
	"websocket_apn/log"
)

func ParaGameResource(data string) *D.ResourceInfo {
	para := strings.Split(data, "=")
	info := &D.ResourceInfo{}
	if len(para) != 2 {
		return nil
	}
	switch para[0] {
	case D.R_Resource_STR_XianYu:
		info.Type = D.R_Resource_XianYu
		break
	case D.R_Resource_STR_Stone:
		info.Type = D.R_Resource_Stone
		break
	case D.R_Resource_STR_Peech:
		info.Type = D.R_Resource_Peech
		break
	case D.R_Resource_STR_JingPingShui:
		info.Type = D.R_Resource_JingPingShui
		break
	case D.R_Resource_STR_LiuLiZhu:
		info.Type = D.R_Resource_LiuLiZhu
		break
	case D.R_Resource_STR_TianYanLin:
		info.Type = D.R_Resource_TianYanLin
		break
	case D.R_Resource_STR_KunLunTie:
		info.Type = D.R_Resource_KunLunTie
		break
	default:
		info.Type = D.R_Resource_Unkown
		break
	}
	if gData, ok := D.GameResource[info.Type]; ok {
		for idx, data := range gData {
			if idx == 0 {
				continue
			}
			if data == para[1] {
				info.Level = idx
				return info
			}
		}
		return nil
	}
	return nil
}
func ParaResourceInfo(data byte) D.ResourceInfo {
	info := D.ResourceInfo{}
	if data > 144 && data <= 149 {
		info.Type = D.R_Resource_XianYu //仙玉
		info.Level = int(data) - 144
	} else if data > 151 && data <= 156 {
		info.Type = D.R_Resource_JingPingShui //净瓶水
		info.Level = int(data) - 151
	} else if data > 158 && data <= 163 {
		info.Type = D.R_Resource_LiuLiZhu //琉璃珠
		info.Level = int(data) - 158
	} else if data > 165 && data <= 170 {
		info.Type = D.R_Resource_Stone //灵石
		info.Level = int(data) - 165
	} else if data > 172 && data <= 177 {
		info.Type = D.R_Resource_Peech //仙桃
		info.Level = int(data) - 172
	} else if data > 179 && data <= 184 {
		info.Type = D.R_Resource_TianYanLin //天衍令
		info.Level = int(data) - 179
	} else if data > 186 && data <= 191 {
		info.Type = D.R_Resource_KunLunTie //昆仑铁
		info.Level = int(data) - 186
	} else {
		info.Type = D.R_Resource_Unkown //未知
	}
	return info
}

/*
71 AB 00 00 03 A3 00 00 04 1C 00 00 02 D4 07 01 81 E2 0A 8E 07 08 01
12 26 0A 08 31 30 30 30 32 39 3D 31 10 01 18 D8 FF FF FF FF FF FF FF FF 01 20 00 28 03 40 00 48 E8 EE D2 B7 C0 5A 58 00
12 82 03 0A 08 31 30 30 30 30 34 3D 35 10 02 18 F9 FE FF FF FF FF FF FF FF 01 20 01 28 03 3A D4 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 7355 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9F 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 616C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 DF F4 08 40 8A 95 92 93 EE 31 48 E8 EE D2 B7 C0 5A 58 00
12 1D 0A 08 31 30 30 30 32 39 3D 31 10 01 18 63 20 02 28 03 40 00 48 E8 EE D2 B7 C0 5A 58 00
12 26 0A 08 31 30 30 30 30 34 3D 33 10 01 18 FE FF FF FF FF FF FF FF FF 01 20 03 28 03 40 00 48 E8 EE D2 B7 C0 5A 58 00
12 1F 0A 0A 31 30 30 30 30 33 3D 33 35 30 10 01 18 2F 20 04 28 03 40 00 48 E8 EE D2 B7 C0 5A 58 00
12 26 0A 08 31 30 30 30 30 30 3D 34 10 02 18 AF FF FF FF FF FF FF FF FF 01 20 05 28 03 40 00 48 E8 EE D2 B7 C0 5A 58 00 18 80 B0 F2 93 EE 31 22 BD 02 08 E8 EE D2 B7 C0 5A 12 0C E6 9C 88E5 BD B1 E4 B9 8B E6 98 9F 18 BE CA 08 2A 87 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 51 33 61 75 48 67 7A 77 7A 4D 34 78 37 32 32 44 6B 6F 76 7A 41 49 33 69 62 4E 53 41 7A 67 45 63 74 69 63 69 61 75 33 69 63 45 4D 4C 56 44 41 54 38 37 6A 6E 70 47 73 69 62 69 63 55 48 65 43 59 64 44 71 38 4B 69 61 54 43 45 54 4B 70 6D 75 62 37 54 70 45 73 72 76 63 61 46 4B 50 41 2F 31 33 32 32 97 01 08 E8 EE D2 B7 C0 5A 18 BE CA 08 22 87 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 51 33 61 75 48 67 7A 77 7A 4D 3478 37 32 32 44 6B 6F 76 7A 41 49 33 69 62 4E 53 41 7A 67 45 63 74 69 63 69 61 75 33 69 63 45 4D 4C 56 44 41 54 38 37 6A 6E 70 47 73 69 62 69 63 55 48 65 43 59 64 44 71 38 4B 69 61 54 43 45 54 4B 70 6D 75 62 37 54 70 45 73 72 76 63 61 46 4B 50 41 2F 31 33 32 28 00 28 00 30 00 38 00 40 00

*/
func ParaUserGameResource(dataBytes []byte) D.UserResourceInfo {
	info := D.UserResourceInfo{}
	if len(dataBytes) < 3 {
		return info
	}
	data := BytesToHexStr(dataBytes)
	// 定义正则表达式
	re := regexp.MustCompile(`12([0-9A-F]{2}|[0-9A-F]{4})0A[0-9A-F]{2}31303030`)
	res := re.FindAllStringIndex(data, -1)
	if len(res) == 0 {
		log.Errorf("解析数据失败-%s", data)
	}
	// 打印结果
	for _, idx := range res {
		if idx[0]%2 != 0 || idx[1]%2 != 0 {
			continue
		}
		startIdx := int(idx[0] / 2)
		totalLen := (idx[1] - idx[0] - 14) / 2
		totalNum := int(dataBytes[startIdx+1])
		if totalLen == 2 {
			totalNum += 256
		}
		dataNum := int(dataBytes[startIdx+totalLen+2])
		//log.Debug(HexToHexStr(dataBytes[startIdx:startIdx+totalNum+2]), "\n", string(dataBytes[startIdx+totalLen+3:startIdx+totalLen+3+dataNum]))
		data := ParaGameResource(string(dataBytes[startIdx+totalLen+3 : startIdx+totalLen+3+dataNum]))
		reNum := regexp.MustCompile(`200([0-5]+)28`)
		if len(dataBytes) < startIdx+totalNum+2 {
			continue
		}
		dataIdx := reNum.FindStringSubmatch(BytesToHexStr(dataBytes[startIdx : startIdx+totalNum+2]))
		num := 0
		if len(dataIdx) >= 2 {
			num, _ = strconv.Atoi(dataIdx[1])
		}
		if data != nil {
			info.ResourceInfo[num] = *data
		}
		info.UserId = BytesToHexStr(dataBytes[startIdx+totalNum-6 : startIdx+totalNum])
		if totalNum > 50 {
			info.ResourceInfo[num].IsTake = true
			info.IsTake = true
		}
	}
	return info
}

/*
71 AB 00 00 03 93 00 00 04 22 00 00 02 D4 07 01 81 E2

08 00 12 FC 06
0A 40 0A 2C 08 F1 98 D4 B7 C0 5A 12 0C E5 AE A6 E5 8D BF E4 BB 99 E5 B0 8A                   18 BB CA 08 2A 00 32 0F 08 F1 98 D4 B7 C0 5A 18 BB CA 08 22 00 28 00 10 A6 4E 10 AE 4E 10 AD 4E 10 AE 4E 10 AD 4E 10 91 4E
0A 45 0A 31 08 B2 E0 8D B8 C0 5A 12 0F E6 9D A8 E9 93 B6 E5 BA B6 E6 98 9F E5 90 9B          18 BC CA 08 2A 00 32 11 08 B2 E0 8D B8 C0 5A 18 BC CA 08 22 00 28 DF F4 08 10 AD 4E 10 AD 4E 10 98 4E 10 A6 4E 10 AD 4E 10 AD 4E
0A 43 0A 2F 08 BF 85 DA B7 C0 5A 12 0F E7 86 8A E7 8C AB E4 B8 8D E6 98 AF E7 8C AB          18 BC CA 08 2A 00 32 0F 08 BF 85 DA B7 C0 5A 18 BC CA 08 22 00 28 00 10 A6 4E 10 9F 4E 10 AD 4E 10 A6 4E 10 91 4E 10 AD 4E
12 46 0A 32 08 A1 DA 86 B8 C0 5A 12 12 E6 85 95 E5 AE B9 E9 92 A7 E4 BF AE E9 81 93 E7 A5 96 18 DA C9 08 2A 00 32 0F 08 A1 DA 86 B8 C0 5A 18 DA C9 08 22 00 28 00 10 AD 4E 10 9F 4E 10 AD 4E 10 AE 4E 10 AD 4E 10 AE 4E
12 43 0A 2F 08 D8 E9 E6 B7 C0 5A 12 0F E6 89 88 E5 8D BF E4 BF AE E7 A5 96 E5 B8 88          18 BE CA 08 2A 00 32 0F 08 D8 E9 E6 B7 C0 5A 18 BE CA 08 22 00 28 00 10 91 4E 10 AD 4E 10 98 4E 10 A6 4E 10 AD 4E 10 AD 4E
12 40 0A 2C 08 CF D2 F0 B7 C0 5A 12 0C E6 A8 8A E5 B9 BF E4 BB 99 E5 B0 8A                   18 BE CA 08 2A 00 32 0F 08 CF D2 F0 B7 C0 5A 18 BE CA 08 22 00 28 00 10 AE 4E 10 A6 4E 10 91 4E 10 99 4E 10 B4 4E 10 AE 4E
12 42 0A 2E 08 DE F1 F5 B7 C0 5A 12 0C E8 99 9E E7 AB AF E4 BB 99 E9 95 BF                   18 BE CA 08 2A 00 32 11 08 DE F1 F5 B7 C0 5A 18 BE CA 08 22 00 28 DF F4 08 10 B7 4E 10 AD 4E 10 A6 4E 10 AD 4E 10 AD 4E 10 AD 4E
12 42 0A 2E 08 D7 C1 81 B8 C0 5A 12 0E E4 BF AE E4 BB 99 C2 B7 E5 B1 B1 E5 90 9B             18 DB C9 08 2A 00 32 0F 08 D7 C1 81 B8 C0 5A 18 DB C9 08 22 00 28 00 10 91 4E 10 AE 4E 10 A6 4E 10 AE 4E 10 9F 4E 10 BE 4E
12 43 0A 2F 08 DB EB 89 B8 C0 5A 12 0F E7 9B B8 E7 AB AF E5 A7 BF E9 81 93 E4 BA BA          18 B3 D5 08 2A 00 32 0F 08 DB EB 89 B8 C0 5A 18 B3 D5 08 22 00 28 00 10 A0 4E 10 AD 4E 10 AD 4E 10 AD 4E 10 AD 4E 10 AD 4E
12 40 0A 2C 08 81 B9 8A B8 C0 5A 12 0C E7 94 B0 E5 B3 A5 E4 BB 99 E5 B0 8A                   18 D9 C9 08 2A 00 32 0F 08 81 B9 8A B8 C0 5A 18 D9 C9 08 22 00 28 00 10 AD 4E 10 AD 4E 10 AD 4E 10 AE 4E 10 A6 4E 10 B5 4E
12 40 0A 2C 08 8A C3 F8 B7 C0 5A 12 0C E8 8D A3 E5 A3 AB E4 B8 8A E4 BB 99                   18 BE CA 08 2A 00 32 0F 08 8A C3 F8 B7 C0 5A 18 BE CA 08 22 00 28 00 10 91 4E 10 A0 4E 10 AD 4E 10 AD 4E 10 AD 4E 10 AD 4E
12 43 0A 2F 08 91 AD F3 B7 C0 5A 12 0F E6 BE B9 E5 8F B0 E6 BB A8 E4 BB 99 E9 95 BF          18 BE CA 08 2A 00 32 0F 08 91 AD F3 B7 C0 5A 18 BE CA 08 22 00 28 00 10 AD 4E 10 9F 4E 10 A6 4E 10 AD 4E 10 98 4E 10 B4 4E
12 40 0A 2C 08 89 A3 EC B7 C0 5A 12 0C E6 99 8F E5 87 A1 E4 B8 8A E4 BB 99                   18 BF CA 08 2A 00 32 0F 08 89 A3 EC B7 C0 5A 18 BF CA 08 22 00 28 00 10 BC 4E 10 98 4E 10 B4 4E 10 B4 4E 10 BC 4E 10 98 4E
18 94 84 AA 88 EF 31
*/
func ParaUserResourceInfo(dataBytes []byte) []D.UserResourceInfo {
	var allInfo []D.UserResourceInfo
	var nextTime time.Time
	data := BytesToHexStr(dataBytes)
	allLen := len(dataBytes)
	if allLen < 5 {
		return allInfo
	}
	if dataBytes[allLen-1]>>4 == 3 && dataBytes[allLen-7] == 0x18 {
		nextTime = ParaHexStrToTimeMs(data[allLen*2-12:]).Add(5*time.Minute + time.Second)
	}
	// 定义正则表达式                                                    			           1 ID									           2 名字		 3 待处理数据           4 资源          5 资源            6 资源            7 资源            8 资源           9 资源          10 是否正在采集
	re := regexp.MustCompile(`(?:0A|12)(?:[0-9A-F]{2}){1,2}0A(?:[0-9A-F]{2}){1,2}08([0-9A-F]{12}|[0-9A-F]{20})12[0-9A-F]{2}((?:[0-9A-F]{2})+?)18((?:[0-9A-F]{2})+?)10([0-9A-F]{2})4E10([0-9A-F]{2})4E10([0-9A-F]{2})4E10([0-9A-F]{2})4E10([0-9A-F]{2})4E10([0-9A-F]{2})4E(?:18(0[0-1]))?`)
	res := re.FindAllStringSubmatch(data, -1)
	if len(res) == 0 {
		log.Errorf("解析数据失败-%s", data)
	}
	// 打印结果
	for _, regRes := range res {
		//log.Infof("%#v", regRes[1:])
		info := D.UserResourceInfo{
			UserId: regRes[1],                  //用户ID
			Name:   HexDataStrToStr(regRes[2]), //用户姓名
			Time:   nextTime,                   //下一次采集的时间
		}
		info.ResourceInfo[0] = ParaResourceInfo(OneByteHexStrToByte(regRes[4]))
		info.ResourceInfo[1] = ParaResourceInfo(OneByteHexStrToByte(regRes[5]))
		info.ResourceInfo[2] = ParaResourceInfo(OneByteHexStrToByte(regRes[6]))
		info.ResourceInfo[3] = ParaResourceInfo(OneByteHexStrToByte(regRes[7]))
		info.ResourceInfo[4] = ParaResourceInfo(OneByteHexStrToByte(regRes[8]))
		info.ResourceInfo[5] = ParaResourceInfo(OneByteHexStrToByte(regRes[9]))
		if regRes[10] == "01" {
			info.IsTake = true
		}
		allInfo = append(allInfo, info)
		log.Debugf("%-10s(%s) %t [%s] %s", info.Name, info.UserId, info.IsTake, info.ToString(), info.Time.Format("2006-01-02 15:04:05"))
	}
	return allInfo
}

/*
[DEBUG] [2024/05/11 23:20:53] [PRJ/websocket_apn/main_test.go]:[  195]:   MessageID: ↓↓↓↓↓ Server.101
[DEBUG] [2024/05/11 23:20:53] [PRJ/websocket_apn/main_test.go]:[  197]:   game cmd[1053]-unkown - id:3109673861602
[DEBUG] [2024/05/11 23:20:53] [PRJ/websocket_apn/main_test.go]:[  198]:   PayloadBytes: 71 AB 00 00 07 88 00 00 04 1D 00 00 02D4 07 01 81 E2 0A F8 02 0A 09 31 30 30 30 30 34 3D 32 30 10 04 18 3F 20 05 28 04 32 D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 FB DB B6 8E F7 31 48 E2 83 86 B8 C0 5A 58 00 0A F7 02 0A 08 31 30 30 30 32 39 3D 35 1005 18 2D 20 01 28 04 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 386F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 D2 A0 C0 AA F7 31 48 81 E5 8B B8 C0 5A 58 00 0A F7 02 0A08 31 30 30 30 32 39 3D 34 10 04 18 34 20 05 28 04 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 786A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 B0 8A B1 92 F7 31 48 F1 D0D2 B7 C0 5A 58 00 0A 81 03 0A 09 31 30 30 30 30 34 3D 32 30 10 04 18 A9 FF FF FF FF FF FF FF FF 01 20 01 28 04 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 2801 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 426F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E42 69 62 51 2F 31 33 32 28 00 40 F7 AF B4 81 F7 31 48 CC 93 FE B7 C0 5A 58 00 0A 80 03 0A 08 31 30 30 30 30 34 3D 35 10 02 18 C4 FB FF FF FF FF FF FF FF 01 20 05 28 03 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E79A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 B3 AC C4 E7 F6 31 48 9B F7 F9 B7 C0 5A 58 00
71 AB 00 00 07 88 00 00 04 1D 00 00 02 D4 07 01 81 E2
                                             当前资源等级                           所在位置
0A F8 02 0A 09 31 30 30 30 30 34 3D 32 30 10 04 18 3F                            20 05 28 04 32 D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 FB DB B6 8E F7 31 48 E2 83 86 B8 C0 5A 58 00
0A F7 02 0A 08 31 30 30 30 32 39 3D 35    10 05 18 2D                            20 01 28 04 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 D2 A0 C0 AA F7 31 48 81 E5 8B B8 C0 5A 58 00
0A F7 02 0A 08 31 30 30 30 32 39 3D 34    10 04 18 34                            20 05 28 04 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 B0 8A B1 92 F7 31 48 F1 D0 D2 B7 C0 5A 58 00
0A 81 03 0A 09 31 30 30 30 30 34 3D 32 30 10 04 18 A9 FF FF FF FF FF FF FF FF 01 20 01 28 04 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 F7 AF B4 81 F7 31 48 CC 93 FE B7 C0 5A 58 00
0A 80 03 0A 08 31 30 30 30 30 34 3D 35    10 02 18 C4 FB FF FF FF FF FF FF FF 01 20 05 28 03 3A D2 02 08 E2 83 86 B8 C0 5A 12 11 E4 BF AE E4 BB 99 C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 FF FF FF FF FF FF FF FF FF 01 20 01 28 01 32 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 3A 9D 01 08 E2 83 86 B8 C0 5A 18 FF FF FF FF FF FF FF FF FF 01 22 86 01 68 74 74 70 73 3A 2F 2F 74 68 69 72 64 77 78 2E 71 6C 6F 67 6F 2E 63 6E 2F 6D 6D 6F 70 65 6E 2F 76 69 5F 33 32 2F 62 76 49 6B 4D 73 55 42 6F 37 69 61 6B 53 4C 6B 69 61 42 69 63 44 4A 51 49 64 6B 78 6A 4E 58 58 62 57 55 5A 57 7A 51 50 4D 55 65 41 57 53 70 6C 51 7A 30 69 62 58 4A 4D 54 4B 44 48 4B 4B 6B 69 61 6C 4C 38 6F 61 6D 57 33 6F 34 42 50 52 47 30 4A 6F 74 32 66 4D 6D 6E 42 69 62 51 2F 31 33 32 28 00 40 B3 AC C4 E7 F6 31 48 9B F7 F9 B7 C0 5A 58 00

*/
func ParaFudiHomeManageInfo(dataBytes []byte) []D.FudiHomeManageInfo {
	var allInfo []D.FudiHomeManageInfo
	data := BytesToHexStr(dataBytes)
	if len(dataBytes) < 5{
		return allInfo
	}
	// 定义正则表达式                       1长度                                           2资源信息    4当前资源等级                  6 所在位置
	re := regexp.MustCompile(`0A([0-9A-F]{2}|[0-9A-F]{2}0[0-9A-F])0A[0-9A-F]{2}((3[0-9Dd])+?)10(0[0-9])18([0-9A-F]{2})+?20(0[0-9])28`)
	indices := re.FindAllStringIndex(data, -1)
	regRes := re.FindAllStringSubmatch(data, -1)
	if len(regRes) == 0 {
		log.Errorf("解析数据失败-%s", data)
	}
	// 打印结果
	for num, idx := range indices {
		if idx[0]%2 != 0 || idx[1]%2 != 0 {
			continue
		}
		startIdx := int(idx[0] / 2)
		dataLen := int(ParaIntDataByHexStr(regRes[num][1])) + len(regRes[num][1])/2 + 1
		//endIdx := int(idx[1] / 2)

		info := D.FudiHomeManageInfo{}
		if dataBytes[startIdx+dataLen-2] == 0x58 && dataBytes[startIdx+dataLen-1] == 0x00 {
			info.UserId = BytesToHexStr(dataBytes[startIdx+dataLen-8 : startIdx+dataLen-2])
		}
		resInfo, _ := HexStrToBytes(regRes[num][2])
		resInfoData := ParaGameResource(string(resInfo))
		if resInfoData != nil {
			info.ResourceInfo = *resInfoData
		} else {

			log.Debugf("%s", string(resInfo))
		}

		idx, _ := strconv.Atoi(regRes[num][6])
		info.ResourceInfo.Location = idx

		//log.Infof("%+v", info)
		allInfo = append(allInfo, info)
	}
	return allInfo
}

//更新老鼠数量
func ParaNumberOfMiceInfo(dataBytes []byte) D.FuDiData {
	var info D.FuDiData
	data := BytesToHexStr(dataBytes)
	// 定义正则表达式                    1 剩余老鼠数量    2 总老鼠数量
	re := regexp.MustCompile(`08([0-9A-F]{2}|[0-9A-F]{20})10([0-9A-F]{2})18`)
	res := re.FindAllStringSubmatch(data, -1)
	if len(res) == 0 {
		log.Errorf("解析数据失败-%s", data)
	}
	// 打印结果
	for _, regRes := range res {
		info.LeftMouseNum = int(OneByteHexStrToByte(regRes[1]))
		if info.LeftMouseNum == 255 {
			info.LeftMouseNum = 0
		}
		info.MouseTotal = int(OneByteHexStrToByte(regRes[2]))
		log.Infof("福地-空闲老鼠【%d】,总老鼠【%d】", info.LeftMouseNum, info.MouseTotal)
	}
	return info
}
